外部 Renderer
除了使用官方 Rive renderer backend,你也可以实现自己的 renderer,把 Rive 内容接入已有引擎或自定义图形管线。
这种方式适合:
- 已有成熟渲染器或游戏引擎。
- 需要与现有 render graph 深度整合。
- 目标平台没有现成的 Rive backend。
- 需要对资源生命周期、pipeline state、命令提交进行完全控制。
核心思路
Rive 的 ArtboardInstance 会调用 renderer 接口发出绘制命令。你的 renderer 需要把这些命令转换为底层图形 API 或引擎绘制操作。
常见职责包括:
- 路径填充与描边。
- 变换矩阵。
- 裁剪。
- 混合模式。
- 图片、字体和其他资源。
- render target 与 command submission。
与 Factory 的关系
在 Rive runtime 中,Factory 通常负责创建运行时需要的图形资源,例如路径、图片或字体等。自定义 renderer 往往也需要配套自己的 Factory 实现。
// 伪代码:自定义 Factory 和 Renderer
class MyFactory : public rive::Factory { /* ... */ };
class MyRenderer : public rive::Renderer { /* ... */ };
集成建议
- 先用官方 renderer backend 跑通内容加载、状态机和数据绑定。
- 再逐步替换为自定义 renderer,便于定位问题。
- 为裁剪、混合和复杂路径准备测试用例。
- 注意字体、图片和音频等 out-of-band assets 的加载路径。
- 如果目标是游戏引擎,建议把 Rive 绘制封装为独立 render pass。